#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const double PI = acos(-1);
const int N = 1e7 + 10;

struct Complex {
    double x, y;
    Complex(double xx = 0, double yy = 0) : x(xx), y(yy) {}
    Complex operator + (const Complex& b) const { return Complex(x + b.x, y + b.y); }
    Complex operator - (const Complex& b) const { return Complex(x - b.x, y - b.y); }
    Complex operator * (const Complex& b) const { return Complex(x * b.x - y * b.y, x * b.y + y * b.x); }
} a[N], b[N];

// //后面的type表示要进行的变换是什么类型
// //-1表示从点值变为系数
// //1表示从系数变为点值

// void FFT(int n, Complex a[], int type) {
//     if (n == 1) return;
//     Complex a1[n/2], a2[n/2];
//     for (int i = 0; 2*i < n; i++) {
//         a1[i] = a[2*i];
//         a2[i] = a[2*i + 1]; 
//     }
//     FFT(n/2, a1, type);
//     FFT(n/2, a2, type);
//     Complex wn(cos(2*PI/n), type*sin(2*PI/n));  
//     Complex w(1, 0);                           
//     for (int i = 0; 2*i < n; i++, w = w * wn) {
//         a[i] = a1[i] + w * a2[i];
//         a[i + n/2] = a1[i] - w * a2[i];
//     }
// }

// void solve() {
//     int n, m;
//     cin >> n >> m;
    
//     for (int i = 0; i <= n; i++) {
//         cin >> a[i].x;
//         a[i].y = 0; 
//     }
//     for (int i = 0; i <= m; i++) {
//         cin >> b[i].x;
//         b[i].y = 0; 
//     }
//     int limit = 1;
//     while (limit <= n + m) limit <<= 1;
    
//     FFT(limit, a, 1);
//     FFT(limit, b, 1);
//     for (int i = 0; i < limit; i++) {
//         a[i] = a[i] * b[i];
//     }
//     FFT(limit, a, -1);
//     for (int i = 0; i <= n + m; i++) {
//         cout << (int)(a[i].x / limit + 0.5) << " ";
//     }
//     cout << endl;
// }

// int main() {
//     ios::sync_with_stdio(0);
//     cin.tie(0), cout.tie(0);
    
//     solve();
    
//     return 0;
// }

int n,m;
int l,r[N];
int limit=1;
void FFT(Complex a[],int type){
    for(int i=0;i<=limit;i++){
        if(i<r[i])swap(a[i],a[r[i]]);
    }
    for(int mid=1;mid<limit;mid<<=1){
        Complex wn(cos(PI/mid),type*sin(PI/mid));
        for(int R=mid<<1,j=0;j<limit;j+=R){
            Complex w(1,0);
            for(int k=0;k<mid;k++,w=w*wn){
                Complex x=a[j+k],y=w*a[j+mid+k];
                a[j+k]=x+y;
                a[j+k+mid]=x-y;
            }
        }
    }
}

int main(){
    cin>>n>>m;
    for(int i=0;i<=n;i++){
        cin>>a[i].x;
        a[i].y=0;
    }
    for(int i=0;i<=m;i++){
        cin>>b[i].x;
        b[i].y=0;
    }
    while(limit<=n+m)limit<<=1,l++;
    for(int i=0;i<limit;i++){
        r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
    }
    FFT(a,1);
    FFT(b,1);
    for(int i=0;i<=limit;i++){
        a[i]=a[i]*b[i];
    }
    FFT(a,-1);
    for(int i=0;i<=n+m;i++){
        cout<<(int)(a[i].x/limit+0.5)<<' ';
    }
}